import instance from '@/api/request/my_axios';

const Request = class {
  // url表示加载地址
  // arg表示传递的参数，如果是post、put、patch方式，要以json传递字符，需要先转换为Json字符串再调用本方法。如果直接传递对象参数，将调用相应的param参数
  constructor(url, data = {}, config) {
    this.url = url;
    this.data = data;
    if (typeof config !== 'undefined') {
      this.config = config;
    } else {
      this.config = {};
    }
  }

  /*  post():AxiosPromise|object {
      return new Promise((resolve, reject) => {
        if (typeof this.data !== 'string') { // 如果data不是字符串类型，说明传递过来的是一个对象.
          instance.post(this.url,null,{
            params: this.data,
          }) .then((res) => { // res表示成功返回的服务端数据
            resolve(res);
          }).catch((error) => { // error 表示服务端响应的http错误状态信息
            reject(error);
          });
          /!*
          //之前使用地址栏拼接，也是可以实现，不过没有必要。保留后期也许某个地方需要
          Object.keys(this.data).forEach((key) => {
            // if (Object.prototype.hasOwnProperty.call(this.data, item)) {
            // param += `${encodeURIComponent(key)}=${encodeURIComponent(this.data[key])}&`;
            this.url += `${this.url.indexOf('?') > 0 ? '&' : '?'}${key}=${this.data[key]}`;
          });
          instance.post(this.url)
            .then((res) => { // res表示成功返回的服务端数据
              resolve(res);
            }).catch((error) => { // error 表示服务端响应的http错误状态信息
              reject(error);
            });*!/
        } else { // 如果data是字符串类型，说明传递过来的是json字符串；
          instance.post(this.url, this.data)
            .then((res) => { // res表示成功返回的服务端数据
              resolve(res);
            }).catch((error) => { // error 表示服务端响应的http错误状态信息
              reject(error);
            });
        }
      });
    } */
  /* get() {
      return new Promise((resolve, reject) => {
        instance.get(this.url,{
            params: this.data,
           })
          .then((res) => { // res表示成功返回的服务端数据
            resolve(res);
          }).catch((error) => { // error 表示服务端响应的http错误状态信息
            reject(error);
        });
      });
    } */
  get() {
    return instance.get(this.url, {
      params: this.data,
    });
  }

  // 如果是除了json还有query方式要传递，则在config参数中使用下面的类型传递
  //   {
  //       params: this.data,
  //     }
  post() {
    return instance.post(this.url, this.data, this.config);
  }

  /*  put() {
      return new Promise((resolve, reject) => {
        instance.put(this.url, this.data, this.config)
          .then((res) => { // res表示成功返回的服务端数据
            console.log(res);
            resolve(res);
          })
          .catch((error) => { // error 表示服务端响应的http错误状态信息
            console.log(error);
            reject(error);
          });
      });
    } */
  put() {
    return instance.put(this.url, this.data, this.config);
  }

  patch() {
    return instance.patch(this.url, this.data, this.config);
  }

  delete() {
    /*    if (typeof this.data !== 'string'){
          const ids = [];//定义要批量的主键
          for (let i = 0; i < this.data.length; i++) {
            ids.push(this.data[i]);
          }
        } */
    return instance.delete(this.url, this.config);
  }
};
export default Request;
// # sourceMappingURL=request.js.map
